#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "error.h"
#include "arista.h"



struct sarista {
	vertice v1,v2;
	int peso;
};

arista
arista_fromNodes (vertice ver1, vertice ver2, int weight)
{
	arista a=NULL;
	a = (arista) calloc (1,sizeof(struct sarista));

	if (a==NULL)
		err(EXIT_FAILURE,ERRFMT,"arista_fromNodes: lack of free memory",__LINE__);

	a -> v1 = ver1;
	a -> v2 = ver2;
	a -> peso = weight;

	return a;
}

arista
arista_clone (arista a)
{
	arista ret=NULL;

	if (a==NULL)
		return a;
	else
	{
		ret = (arista)calloc(1,sizeof(struct sarista));

		if(ret == NULL)
			errx(EXIT_FAILURE,ERRFMT,"arista_clone: lack of memory",__LINE__);

		ret -> v1 = a -> v1;
		ret -> v2 = a -> v2;
		ret -> peso = a -> peso;
	}
	return ret;
}

int
arista_peso (const arista a)
{
	int i;
	assert(a!=NULL);
	i = a -> peso;
	return i;
}

vertice
arista_v1 (const arista a)
{
	int i;
	assert (a!=NULL);
	i = a->v1;
	return i;
}

vertice
arista_v2 (const arista a)
{
	int i;
	assert (a!=NULL);
	i = a->v2;
	return i;
}

arista
arista_destroy (arista a)
{
	if (a==NULL)
		return a;
	else
	{
		free(a);
		a=NULL;
		return a;
	}
}

/*	TEST	
int main (void){
	arista a=arista_fromNodes(1,2,10),b=NULL;
	int w;
	vertice v1=0,v2=0;

	b = arista_clone(a);
	w = arista_peso(b);
	v1 = arista_v1(a);
	v2 = arista_v2(b);

	if(w==10 && v1==1 && v2 ==2)
		printf("\nTest Superado\n");
	else
		printf("\nTest Fallido\n");

	a = arista_destroy(a);
	b = arista_destroy(b);

	return 0;
}*/
